

# 举例
# 判断 $(CC) 变量是否 gcc, 如果是的话则使用 GNU 函数编译目标
libs_for_gcc = -lgnu
normal_libs =
foo: $(objects)
ifeq ($(CC),gcc)
	$(CC) -o foo $(objects) $(libs_for_gcc)
else
	$(CC) -o foo $(objects) $(normal_libs)
endif



# 语法
# <conditional-directive>
# <text-if-true>
# else
# <text-if-false>
# endif











# ifeq / ifneq
ifeq (<arg1>, <arg2>)
ifeq '<arg1>' '<arg2>'
ifeq "<arg1>" "<arg2>"
ifeq "<arg1>" '<arg2>'
ifeq '<arg1>' "<arg2>"

ifneq (<arg1>, <arg2>)
ifneq '<arg1>' '<arg2>'
ifneq "<arg1>" "<arg2>"
ifneq "<arg1>" '<arg2>'
ifneq '<arg1>' "<arg2>"









# ifdef / ifndef
ifdef <variable-name>
ifndef <variable-name>

# 第一个例子中, $(frobozz) 值是 yes, 第二个则是 no
# 示例 1
bar =
foo = $(bar)
ifdef foo
	frobozz = yes
else
	frobozz = no
endif

# 示例 2
foo =
ifdef foo
	frobozz = yes
else
	frobozz = no
endif



# 特别注意的是 make 是在读取 Makefile 时就计算条件表达式的值
# 并根据条件表达式的值来选择语句, 所以最好不要把自动化变量(如 $@ 等)放入条件表达式中
# 因为自动化变量是在运行时才有的
# 而且为了避免混乱 make 不允许把整个条件语句分成两部分放在不同的文件中
